热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linkerd|实现Kubernetes可观察性监测

在本文中,我们将向您展示如何完成基本的Kubernetes可观察性任务:从运行在Kubernetes集群上的应用程序获得黄金指标或黄金信号。我们不需要修改任何代码&#

在本文中,我们将向您展示如何完成基本的Kubernetes可观察性任务:从运行在Kubernetes集群上的应用程序获得黄金指标或黄金信号。我们不需要修改任何代码,也不需要进行任何配置,只要安装Linkerd(一个开源的超轻服务网格)就可以做到这一点。我们将介绍什么是服务网格,术语可观察性是什么意思,以及这两者在Kubernetes上下文中是如何关联的。

用服务网格监控Kubernetes应用程序

如果你们刚刚适应了Kubernetes。恭喜你!但是现在你需要干什么?任何Kubernetes使用者者的第一个可观察性任务之一是监视,您需要知道什么时候出现了问题,以便您可以快速地修复它们。

Kubernetes可观察性是一个非常广泛的话题,网上有很多关于可观察性与监控、分布式跟踪与日志记录等之间的细微差别的讨论。在本文中,我们将重点讨论一个基本问题:在不更改任何代码的情况下,从运行在集群上的应用程序获得黄金指标或黄金信号。我们将安装一个Linkerd,一个开源的超轻量级服务网格。与大多数服务网格不同,Linkerd只需要在集群上安装几分钟,不需要配置。

虽然简单,但Linkerd包含了一个非常强大的度量管道。一旦安装完毕,它将通过观察集群上运行的所有组件之间的HTTP(或gRPC)和TCP通信,自动检测并报告成功率、流量级别和响应延迟。

linkd可以自动为服务报告度量标准通常被引用为服务的黄金度量标准。

什么是黄金度量标准?为什么它们很重要?

如果您已经知道黄金参数是什么,请跳过这一节!

黄金指标或黄金信号是您需要了解应用程序是否按预期启动和运行的首要指标。这些度量为您提供了有关服务运行状况的粗略信号,而不需要知道服务的实际功能。

Cindy Sridharan在她的关于监控和可观察性的博文中写道:当不直接驱动报警时,监控数据应该被优化,以提供系统整体健康状况的鸟瞰图。

谷歌SRE书定义的黄金指标为:

  • 延迟——一种衡量服务速度快慢的方法。它是服务请求所花费的时间,通常以百分比来度量。第99百分位延迟为5ms意味着99%的请求在5ms或更短的时间内得到服务。

  • 流量——让你知道某项服务有多忙或需求有多复杂。通常用每秒对服务的请求数来衡量。

  • 错误-请求失败的数量。通常与总流量相结合来生成一个成功率——成功请求与遇到错误请求的比率。

  • 饱和-衡量你的系统的负载

通过观察服务的流量,Linkerd可以简单地提供延迟、流量和错误的测量——乐观地说,Linkerd以成功率的形式提供了这些数据。(第四个指标,饱和度,在监控讨论中经常被忽略,因为它需要了解服务的内部情况,通常跟踪其他指标,如流量和延迟。)

有时这些指标也被称为服务的RED指标:

  • Rate——您的服务每秒正在处理的请求数。

  • Errors—每秒失败的请求数。

  • Duration——每个请求所花费时间的分布

不管你怎么称呼它们,Linkerd的美妙之处在于,它不仅记录这些指标的流量,而且汇总和报告它们,这样我们就可以轻松地使用它们。(我们将在下面看到。)这使我们能够监控我们的应用程序。一旦我们能够监控我们的应用程序,我们就可以在出错时收到报警;研究其长期性能;并对其可靠性和性能进行测试和改进。

黄金指标:最简单的方法

安装:访问Kubernetes集群并安装Linkerd CLI

我们假设您有一个正常运行的Kubernetes集群和一个指向它的kubectl命令。在本节中,我们将带您浏览linkd入门指南的缩写版本,以便在这个集群上安装Linkerd和一个演示应用程序(我们将获得最佳指标的应用程序)。

首先,安装Linkerd命令行(或者,直接从Linkerd release页面下载。):

curl -sL https://run.linkerd.io/install | sh
export PATH=$PATH:$HOME/.linkerd2/bin

验证Kubernetes集群是否能够处理linkd;安装Linkerd;并验证安装:

linkerd check --pre
linkerd install | kubectl apply -f -
linkerd check

最后,安装Emojivoto演示应用程序,这是我们希望获得黄金指标的应用程序。如果仔细观察下面的命令,您将看到我们实际上是在向应用程序添加linkerd(我们称之为注入),然后将应用程序部署到Kubernetes。(如果您想知道这是如何工作的,请查看我们的文档https://linkerd.io/2/tasks/adding-your-service/)。

curl -sL https://run.linkerd.io/emojivoto.yml \
| linkerd inject - \
| kubectl apply -f -

嗯,就是这样。这就是您需要的所有工具,您的应用程序,并能够访问您的黄金指标!现在让我们来看看他们。

在Grafana查看度量

想要看到所有这些有用的图表和仪表板吗?没有问题!运行linkd dashboard -show grafana并打开命令输出的链接。您将看到Linkerd的顶层仪表盘,其中包含它所收集的指标的总体和每个名称空间的细分。向下滚动到我们应用程序的命名空间(ns/emojivoto),观察以下图表:

通过linkd CLI查看指标

我们还可以使用linkd stat命令查看应用程序的指标。

所有这些数据也可以在Linkerd's dashboard中找到,你可以通过运行Linkerd dashboard来访问:

看看Grafana图表(或linkd仪表盘),你可以立即看到voting服务做得不是很好-它的成功率相当低!向我们的应用程序中添加黄金指标可以立即让我们看到应用程序中可能出现的问题。

真的这么简单吗?答案是肯定的!我们所需要做的就是安装Linkerd并将其注入到我们的应用程序中。在底层,当linkd被添加到一个服务时,它会自动检测与服务的pod之间的任何HTTP和gRPC调用。由于它能够解析这些协议,它可以记录这些调用的响应类和延迟,并将它们聚合在一起,在这种情况下,将它们合并到一个名为Prometheus的时间序列数据库的小型内部实例中。当您通过Linkerd的仪表板和CLI查看黄金指标时,Linkerd会从这个内部的Prometheus实例中获取它们,在不修改应用程序代码的情况下为您提供所有这些指标。

Linkerd还能做什么?

我们已经看到了如何使用Linkerd来获得黄金指标,这是获得系统可观察性的第一步,也就是说,获得复杂应用程序中正在发生的事情的高级视图。但指标只是个开始。当您继续您的监视和可观察性旅程时,您一定会遇到另外两个常用的工具:日志和分布式链路跟踪。

分布式跟踪涉及到检测应用程序,以便测量请求在服务中花费的时间长度。当我们的应用程序使用许多相互通信的微服务时,跟踪是一个很好的工具,可以用来调试缓慢的请求,并找出哪个服务是瓶颈。Linkerd可以帮助分布式跟踪,尽管一个服务网格在分布式跟踪方面做的不多。

类似于分布式跟踪,Linkerd也提供了一个强大的动态请求跟踪工具tap。tap命令类似于用于微服务的tcpdump:它允许您查看发送到或来自特定服务的实时请求(示例)。Tap是在生产中调试Kubernetes服务的强大工具。

最后,应用程序日志当然是开发人员在怀疑某个特定进程不正常时首先要做的事情之一。当运行一个服务网格时,有时候查看网格内部发生了什么是很有用的。虽然Linkerd不能为你提供应用程序日志,但Linkerd logs命令提供了一种简单的方法,至少可以查看Linkerd内部发生了什么。

最后

在这篇博文中,我们讨论了如何轻松获得运行在Kubernetes集群上的应用程序和服务的最佳指标。这是你进行服务可观察之旅的第一步。希望这篇博文中的信息能够帮助您启动并可靠的运行Kubernetes服务。

推荐

Kubernetes入门培训(内含PPT)

使用Kubernetes和Istio构建大规模集群


推荐阅读
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 了解_Istio是啥?一文带你彻底了解!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Istio是啥?一文带你彻底了解!相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 开源项目_一个国外开源项目描述中有中文“谢谢”,到底发生了什么?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了一个国外开源项目描述中有中文“谢谢”,到底发生了什么?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • restful是这些年的高频词汇了,各大互联网公司也都纷纷推出了自己的restfulapi,其实restful和thrift,grpc类似,就是一种协议,但是这种协议有点特殊的就是 ... [详细]
  • 5分钟学会 gRPC
    5分钟学会gRPC-介绍我猜测大部分长期使用Java的开发者应该较少会接触gRPC,毕竟在Java圈子里大部分使用的还是DubboSpringClound这两类服务框架。我也是 ... [详细]
  • 安全3AAuthentication:认证Authorzation:授权Accouting|Audition:审计用户管理用户:UID:0,不一定是root,root的uid非0时 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
author-avatar
立行谏圣
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有